package com.tedu.api.thread;

/**
 * 线程---创建3种
 * 第一种：子类 继承Thread  方案--【使用率不多】
 *        ①编写子类MyThread1 继承 Thread
 *        ②子类，重写run方法【线程运行】
 *        ③实例化 MyThread1 对象  调用start方法【启动线程】
 * 第二种：子类   实现Runnable  方案--【推荐用法】
 *       ①编写子类MyRunnable1  实现 Runnable 接口
 *       ②子类，强制重写run方法【线程运行】
 *       ③实例化MyRunnable1对象 【没有start方法】
 *       ④创建Thread对象，把实例化MyRunnable1对象通过构造器
 *       ⑤调用Thread对象 start方法
 * 线程   继承Thread  内嵌入Runnable接口   重写run方法
 *       JavaOOP-----缺点：Java支持单继承、子类继承Thread,
 *       无法拓展：不仅线程、其他集合、继承其他类，只具备线程功能
 *       启动线程方法 start() -----线程生命周期
 *       缺点：线程创建不明确
 *       实现Runnable   真正线程运行---定义run方法，线程运行状态
 *       缺点：现成的创建不是很方便---项目： 步骤
 *
 *
 *      实现Runnable
 * 第三种：匿名内部类实现线程--->Lambda表达式
 *
 */

public class ThreadAPI {
    public static void main(String[] args) {
        //③实例化MyThread1对象
        MyThread1 mt1=new MyThread1();
        mt1.start();
        //练习：继承Thread线程类--MyThread2[执行结果]1000次
        //                       我对你啊，是One心One意--看结果
        MyThread2 mt2=new MyThread2();
        mt2.start();
    }

}
//MyThread1 子类 | 线程实现类
class MyThread1 extends Thread{
    //②重写run方法
    public void run(){
        for (int i=0;i<1000;i++) {
            System.out.println("给我学呀，One楞One楞的~");
        }
    }
}
class MyThread2 extends Thread{
    //②重写run方法
    public void run(){
        for (int i=0;i<1000;i++) {
            System.out.println("给我学呀，One心One意的~");
        }
    }
}

